home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue42 / alfresco / Project1.dpr < prev   
Encoding:
Text File  |  1999-01-03  |  5.4 KB  |  213 lines

  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils,
  7.   Windows,
  8.   AALnkLst in 'AALnkLst.pas';
  9.  
  10. function CompareValues(aItem1, aItem2 : pointer) : integer;
  11. var
  12.   I1 : longint absolute aItem1;
  13.   I2 : longint absolute aItem2;
  14. begin
  15.   Result := I2 - I1;
  16. end;
  17.  
  18. const
  19.   SpeedCount = 1500000;
  20.  
  21. var
  22.   SList : TaaSingleList;
  23.   DList : TaaDoubleList;
  24.   Stack : TaaStack;
  25.   Queue : TaaQueue;
  26.   i     : integer;
  27.   Start : integer;
  28.   Value : longint;
  29.  
  30. begin
  31.   try
  32.     writeln('SINGLE LINKED LIST TEST');
  33.     SList := TaaSingleList.Create;
  34.     try
  35.       {add 15 items}
  36.       writeln('adding 15 items');
  37.       SList.MoveBeforeFirst;
  38.       for i := 1 to 15 do begin
  39.         Value := Random(100);
  40.         SList.InsertAfter(pointer(Value));
  41.         SList.MoveNext;
  42.       end;
  43.       SList.MoveBeforeFirst;
  44.       while SList.MoveNext do
  45.         writeln(integer(SList.Examine));
  46.       readln;
  47.       {sort them}
  48.       writeln('sorting items');
  49.       SList.Sort(CompareValues);
  50.       SList.MoveBeforeFirst;
  51.       while SList.MoveNext do
  52.         writeln(integer(SList.Examine));
  53.       readln;
  54.       {delete every other item}
  55.       writeln('deleting every other item');
  56.       SList.MoveBeforeFirst;
  57.       while SList.MoveNext do
  58.         if not SList.IsLast then
  59.           SList.DeleteAfter;
  60.       SList.MoveBeforeFirst;
  61.       while SList.MoveNext do
  62.         writeln(integer(SList.Examine));
  63.       readln;
  64.       {delete every other item}
  65.       writeln('deleting every other item again');
  66.       SList.MoveBeforeFirst;
  67.       while SList.MoveNext do
  68.         if not SList.IsLast then
  69.           SList.DeleteAfter;
  70.       SList.MoveBeforeFirst;
  71.       while SList.MoveNext do
  72.         writeln(integer(SList.Examine));
  73.       readln;
  74.     finally
  75.       SList.Free;
  76.     end;
  77.  
  78.     writeln('DOUBLE LINKED LIST TEST');
  79.     DList := TaaDoubleList.Create;
  80.     try
  81.       {add 15 items}
  82.       writeln('adding 15 items');
  83.       DList.MoveBeforeFirst;
  84.       for i := 1 to 15 do begin
  85.         Value := Random(100);
  86.         DList.InsertAfter(pointer(Value));
  87.         DList.MoveNext;
  88.       end;
  89.       writeln('--fwd');
  90.       DList.MoveBeforeFirst;
  91.       DList.MoveNext;
  92.       while not DList.IsAfterLast do begin
  93.         writeln(integer(DList.Examine));
  94.         DList.MoveNext;
  95.       end;
  96.       readln;
  97.       writeln('--bkwd');
  98.       DList.MoveAfterLast;
  99.       DList.MovePrevious;
  100.       while not DList.IsBeforeFirst do begin
  101.         writeln(integer(DList.Examine));
  102.         DList.MovePrevious;
  103.       end;
  104.       readln;
  105.       {sort them}
  106.       writeln('sorting items');
  107.       DList.Sort(CompareValues);
  108.       writeln('--fwd');
  109.       DList.MoveBeforeFirst;
  110.       DList.MoveNext;
  111.       while not DList.IsAfterLast do begin
  112.         writeln(integer(DList.Examine));
  113.         DList.MoveNext;
  114.       end;
  115.       readln;
  116.       writeln('--bkwd');
  117.       DList.MoveAfterLast;
  118.       DList.MovePrevious;
  119.       while not DList.IsBeforeFirst do begin
  120.         writeln(integer(DList.Examine));
  121.         DList.MovePrevious;
  122.       end;
  123.       readln;
  124.       {delete every other item}
  125.       writeln('deleting every other item');
  126.       DList.MoveBeforeFirst;
  127.       while DList.MoveNext do
  128.         DList.Delete;
  129.       writeln('--fwd');
  130.       DList.MoveBeforeFirst;
  131.       DList.MoveNext;
  132.       while not DList.IsAfterLast do begin
  133.         writeln(integer(DList.Examine));
  134.         DList.MoveNext;
  135.       end;
  136.       writeln('--bkwd');
  137.       DList.MoveAfterLast;
  138.       DList.MovePrevious;
  139.       while not DList.IsBeforeFirst do begin
  140.         writeln(integer(DList.Examine));
  141.         DList.MovePrevious;
  142.       end;
  143.       readln;
  144.       {delete every other item}
  145.       writeln('deleting every other item again');
  146.       DList.MoveBeforeFirst;
  147.       while DList.MoveNext do
  148.         DList.Delete;
  149.       writeln('--fwd');
  150.       DList.MoveBeforeFirst;
  151.       DList.MoveNext;
  152.       while not DList.IsAfterLast do begin
  153.         writeln(integer(DList.Examine));
  154.         DList.MoveNext;
  155.       end;
  156.       writeln('--bkwd');
  157.       DList.MoveAfterLast;
  158.       DList.MovePrevious;
  159.       while not DList.IsBeforeFirst do begin
  160.         writeln(integer(DList.Examine));
  161.         DList.MovePrevious;
  162.       end;
  163.       readln;
  164.     finally
  165.       DList.Free;
  166.     end;
  167.  
  168.     writeln('STACK TEST');
  169.     Stack := TaaStack.Create;
  170.     try
  171.       writeln('pushing ', SpeedCount, ' items');
  172.       Start := GetTickCount;
  173.       for i := 1 to SpeedCount do
  174.         Stack.Push(pointer(i));
  175.       writeln('popping all items');
  176.       i := SpeedCount;
  177.       while Stack.Count <> 0 do begin
  178.         if (i <> integer(Stack.Pop)) then
  179.           raise Exception.Create('bad item in stack');
  180.         dec(i);
  181.       end;
  182.       writeln('done (', GetTickCount-Start, ')');
  183.     finally
  184.       Stack.Free;
  185.     end;
  186.  
  187.     writeln('QUEUE TEST');
  188.     Queue := TaaQueue.Create;
  189.     try
  190.       writeln('enqueuing ', SpeedCount, ' items');
  191.       Start := GetTickCount;
  192.       for i := 1 to SpeedCount do
  193.         Queue.Enqueue(pointer(i));
  194.       writeln('dequeuing all items');
  195.       i := 1;
  196.       while Queue.Count <> 0 do begin
  197.         if (i <> integer(Queue.Dequeue)) then
  198.           raise Exception.Create('bad item in queue');
  199.         inc(i);
  200.       end;
  201.       writeln('done (', GetTickCount-Start, ')');
  202.     finally
  203.       Queue.Free;
  204.     end;
  205.  
  206.  
  207.   except
  208.     on E : Exception do
  209.       writeln(E.Message);
  210.   end;
  211.   readln;
  212. end.
  213.